绿幕直播技术 Green Screen Live Streaming

本页系统梳理"绿幕 + 电脑画面同框"的直播技术:从 直播链路与编码原理、绿幕抠像(色度键)原理,到 OBS Studio / 抖音直播伴侣 / 视频号推流 的具体方案与调参手册。目标是让一个主播实现"人在绿幕前,背景被替换成电脑屏幕画面"的专业直播间。

1. 概述

直播(Live Streaming)是把现场音视频实时采集、处理、编码并推送到平台,再由平台分发给大量观众的技术过程。本页聚焦其中一个高频场景:绿幕抠像直播 —— 主播站在绿幕前,软件把绿色背景抠掉(透明化),再在人物下层垫上电脑屏幕画面、PPT、商品页或虚拟场景,形成"人 + 电脑画面同框"的直播效果。

1.1 梳理范围与边界

本页聚焦"绿幕同框直播"这条链路,即 采集 → 抠像 → 合成 → 编码 → 推流 → 平台分发。与之相邻但不在本页展开的:

1.2 直播技术栈全景

绿幕直播技术的分层:最底层是音视频基础(采集、编码、协议),中层是画面处理引擎(抠像滤镜、场景合成、虚拟摄像机),上层是平台与产品(OBS、直播伴侣、平台推流)。本页自下而上逐层展开。

PlantUML diagram
图 1-1 绿幕直播技术栈全景分层
OBS Studio(Open Broadcaster Software):免费开源、跨平台的直播推流与录制软件。它把多个"源"(摄像头、屏幕、图片、音频)合成为一个场景,经滤镜处理后编码推流或输出为虚拟摄像头。是专业直播的中枢。
直播伴侣(Live Streaming Companion):抖音官方推出的 PC 直播工具,深度集成平台的带货、福袋、评论等互动能力,支持 Windows 与 macOS。
虚拟摄像头(Virtual Camera):把一个软件合成好的画面伪装成系统里的一路"摄像头设备",供其它程序(如直播伴侣、Zoom)调用。

2. 直播链路原理

要理解绿幕直播为什么"卡"、为什么"糊"、为什么"绿边",必须先看清一条直播流的完整旅程。

2.1 一条直播流的完整旅程

  1. 采集(Capture):摄像头把光信号转为数字帧;屏幕采集把显卡输出抓成帧。
  2. 处理(Process):抠像滤镜去背景、缩放、调色、叠加图层,合成一张最终画面。
  3. 编码(Encode):把连续画面压缩成 H.264 / H.265 等码流,体积大幅下降。
  4. 封装 / 推流(Mux / Push):按 RTMP 等协议,把码流实时上传到平台接入服务器。
  5. 分发(Deliver):平台转码后经 CDN 下发给千万观众,观众端解码播放。

整条链路的延迟通常为 2~8 秒(普通直播),连麦/互动场景会更低。绿幕与虚拟摄像头属于第 2 步,是最影响"画面观感"的一环。

2.2 编码与推流协议

编码器负责压缩,分软件编码(x264,吃 CPU)与硬件编码(NVENC / QuickSync / Apple VideoToolbox,走 GPU / 专用电路)。直播推荐硬件编码,把 CPU 留给抠像与合成。码率(Bitrate)决定画质与带宽:太低则画面糊、文字糊,太高则网络受限。协议上,通用推流几乎都走 RTMP。

RTMP(Real-Time Messaging Protocol):基于 TCP 的实时消息传输协议,是直播推流的事实标准。OBS、直播伴侣都通过 RTMP 把码流推给平台,平台返回一个"推流地址 + 串流密钥"。
码率(Bitrate):单位时间传输的数据量,单位 kbps。1080p 直播一般 4000~8000 kbps,录屏/文字场景需更高。
编码器(Encoder):把原始帧压缩成码流的组件。x264 为软件编码;NVENC(NVIDIA)、QuickSync(Intel)、VideoToolbox(Apple)为硬件编码。
关键帧(Keyframe / I-frame):可独立解码的完整帧。关键帧间隔越大,码率越低但拖动/换台越慢。直播常设 2 秒一个关键帧。

2.3 采集与画面质量基础

画面质量的下限由采集决定,上限由编码与推流决定。绿幕直播常见的"模糊"多数出在采集后的缩放与输出分辨率,而非摄像头本身。

要素含义绿幕直播建议
分辨率 Resolution画面像素尺寸,如 1920×1080输出 ≥ 1080p,且与画布一致,避免二次缩放
帧率 FPS每秒画面帧数30fps 足够;游戏/高动态才用 60fps
白平衡 White Balance纠正色温,决定绿色是否"标准绿"固定值(如 5600K),关闭自动白平衡
曝光 Exposure画面明暗关闭自动曝光,手动固定,保证绿幕亮度稳定
缩放滤镜 Scale Filter缩小画面时的插值算法用 Lanczos / 双三次,不要用双线性
白平衡(White Balance):让白色在不同光源下仍显示为白,本质是校正色温。自动白平衡会随画面变化漂移,导致绿幕颜色忽深忽浅,色度键无法稳定工作,因此必须固定。
缩放滤镜(Scale Filter):把源画面放大/缩小时的采样算法。双线性(Bilinear)会模糊细节,双三次(Bicubic)与 Lanczos 更锐利,代价是略高的 GPU 开销。

3. 绿幕抠像原理

3.1 色度键原理

数字画面常用 YUV 表示:Y 是亮度,U/V 是色度(颜色信息)。人眼对亮度敏感、对色度不敏感,因此视频存储时可以降低色度分辨率(色度采样)。抠像正是利用"颜色"这一维度:软件识别出画面中接近纯绿的像素,把它们设为透明,露出下层背景——这就是色度键(Chroma Key)。

色度键(Chroma Key):按颜色而非亮度来抠除背景的技术,又称"键控"。绿幕用绿、蓝幕用蓝,因为人的肤色、头发、衣物中极少出现高饱和的纯绿/纯蓝,抠除最不容易误伤人像。
YUV / YCbCr:把亮度(Y)与色度(Cb/Cr)分离的颜色空间。抠像算法在色度平面上比较"离纯绿有多近",按距离阈值决定透明度。
溢色(Spill):绿幕反射的绿光落在人物头发、肩膀边缘,形成一层绿色辉光,是抠像后最常见的瑕疵。

3.2 三个关键参数

OBS 的"色度键"滤镜只有三个核心参数,理解它们就掌握了抠像:

参数(英文)作用调大 / 调小的效果OBS 默认
相似度 Similarity判定"多接近纯绿才算背景"的颜色范围太大:白色/浅色衣物被误抠;太小:绿幕抠不干净留杂斑400
平滑度 Smoothness抠除边缘的羽化/过渡太小:边缘锯齿;太大:边缘模糊、半透明发灰80
溢出抑制 Key Color Spill Reduction压制边缘残留的绿色辉光太大:人物边缘颜色失真(发红/发灰);太小:绿边明显100
调配顺序:先用"取色器"在绿幕中间调取色 → 大幅调"相似度"到背景干净 → 看边缘有无锯齿,调"平滑度" → 看有无绿边,调"溢出抑制"。三参数都没有固定值,要按实际灯光微调。
关键颜色类型(Key Color Type):抠像的目标颜色,默认绿色,可选蓝色或自定义。绿幕与蓝幕的选择:绿幕需要更亮的灯光,蓝幕更适合肤色深、穿绿衣的人。

3.3 硬件布光与选型

再好的软件参数也救不了糟糕的物理环境。抠像的 90% 是"灯光与绿幕"的功夫:

4. 行为图(系统做什么)

先看系统"做什么"。以下用例图刻画整体行为,活动图、时序图、状态机图围绕最核心的主流程逐步细化。

4.1 用例图

PlantUML diagram
图 4-1 用例图:主播、观众与绿幕直播系统的交互

4.2 活动图 — 从搭建到开播

下图是绿幕同框直播的完整操作流程,也是第 7 章操作手册的骨架。

PlantUML diagram
图 4-2 活动图:搭建 → 抠像 → 合成 → 推流 → 开播

4.3 时序图 — 画面如何送到平台

同一套 OBS 场景,可以通过虚拟摄像头喂给直播伴侣,也可以直接 RTMP 推流,两条路线的时序如下。

PlantUML diagram
图 4-3 时序图:方案 A 虚拟摄像头 vs 方案 B 直接推流

4.4 状态机图 — 直播会话生命周期

PlantUML diagram
图 4-4 状态机图:从待机到推流中、调优、卡顿恢复、结束

5. 结构图(系统由什么组成)

再看"由什么组成"。从部署(放到哪些机器/设备)到组件(软件内部模块),再到包(分层)与类(数据结构)逐层细化。

5.1 部署图 — 主播端软硬件

PlantUML diagram
图 5-1 部署图:物理环境、系统层、应用层与平台云

5.2 组件图 — OBS / 直播伴侣模块

PlantUML diagram
图 5-2 组件图:OBS 采集/滤镜/合成/编码/输出 与 直播伴侣模块

5.3 包图 — 软件分层

PlantUML diagram
图 5-3 包图:应用层 → 处理层 → 系统层 → 硬件层

5.4 类图 — 场景 / 源 / 滤镜模型

PlantUML diagram
图 5-4 类图:Scene / Source / Filter / ChromaKey / OutputProfile 数据模型
场景(Scene):OBS 中一个可切换的画面组合,由多个"源"按图层顺序叠加而成。
源(Source):场景中的一个素材层,可以是摄像头、窗口/显示器、图片、文本、音频等。
滤镜(Filter):挂在源上的处理单元,如色度键、缩放、色彩校正。多个滤镜按顺序串联作用于该源。

6. 方案选型与链路对比

6.1 三条链路对比

链路组成优点缺点 / 适用
A. 直播伴侣直连只开直播伴侣(自带绿幕)最简单;平台互动功能全绿幕参数不可调,抠像易出毛边;适合灯光均匀、要求不高
B. OBS + 虚拟摄像机OBS 抠像合成 → 虚拟摄像头 → 直播伴侣OBS 精细抠像 + 平台互动功能兼得多一层处理,低配电脑可能加重负载;抖音/视频号通用
C. OBS 直接 RTMP 推流OBS 抠像合成 → RTMP → 平台链路最短最稳,无双重编码需手动获取平台推流码;平台互动功能少

6.2 抖音:直播伴侣(含 Mac 版)

抖音官方工具是抖音直播伴侣,官网 streamingtool.douyin.com,同时提供 Windows 版与 macOS 13+ 的 Mac 原生版。它自带绿幕抠像、背景素材、屏幕分享等能力,可直接完成"简单绿幕同框"。

6.3 视频号:OBS + RTMP 直推

视频号官方工具是视频号助手(网页版 channels.weixin.qq.com,或 PC 端直播助手)。RTMP 推流需在直播管理 → 创建直播后获取"推流地址 + 推流密钥",填入 OBS。注意:账号需完成认证才可推流;推流地址有时效性,每次开播建议重新复制密钥。

6.4 自带绿幕 vs OBS 绿幕

对比项直播伴侣自带绿幕OBS 色度键
参数可调基本不可调(仅取色器)相似度/平滑度/溢出全可调
抠像精度灯光不均时边缘发绿、半透明可精细收敛,稳定
多图层合成支持,但更偏素材化支持无限源与滤镜链
上手难度低中
结论图省事、灯光好时够用要求高、场景复杂时首选

7. 实战操作手册

7.1 场景一:直播伴侣 + OBS 虚拟摄像机(推荐)

目标:OBS 里完成绿幕抠像 + 电脑画面合成,再作为摄像头喂给直播伴侣,保留平台全部互动能力。

  1. OBS 添加视频采集设备(摄像头),右键 → 滤镜 → 加色度键,按 7.3 调参抠绿。
  2. 添加窗口采集或显示器采集作为电脑画面,缩放到画面中"显示器"的位置;图层顺序:电脑画面在下,人像在上。
  3. 屏幕源右键 → 变换 → 缩放滤镜 → Lanczos(见 7.4)。
  4. OBS 右下角点「启动虚拟摄像机」。
  5. 打开直播伴侣,添加素材 → 摄像头 → 设备选 OBS Virtual Camera。
  6. 本地预览确认画面、声音正常,再点平台"开始直播"。
虚拟摄像头只传画面不传声音。声音请在直播伴侣里单独选择麦克风;不要 OBS 和直播伴侣同时采集同一路麦克风。

7.2 场景二:OBS 直接 RTMP 推流

  1. 在平台后台创建直播,复制推流地址与串流密钥。
  2. OBS → 设置 → 推流 → 服务选「自定义」 → 服务器填推流地址,串流密钥填密钥。
  3. 设置 → 输出 → 输出模式「高级」→ 编码器选硬件(Mac 用 Apple VideoToolbox,N 卡用 NVENC),码率参考 8.1。
  4. 设置 → 视频:基础(画布)与输出分辨率都设 1080p,帧率 30。
  5. 点「开始推流」,回平台后台点"开始直播"。
视频号推流要点:
视频号助手 → 直播管理 → 创建直播 → 获取
  服务器地址(RTMP URL)→ 填 OBS「服务器」
  串流密钥(Stream Key)→ 填 OBS「串流密钥」
注意:推流地址有有效期,关播后失效;每次开播重新复制密钥。

7.3 场景三:绿幕抠像调参流程

  1. 摄像头属性里关闭自动曝光 / 自动白平衡 / 自动增益。
  2. 色度键滤镜 → 点取色器,在绿幕中间调区域取色。
  3. 先把相似度从小往大调,直到绿色背景完全消失、无杂斑。
  4. 观察人像边缘:有锯齿 → 提高平滑度;有绿边/辉光 → 提高溢出抑制。
  5. 仍不干净时:拉平绿幕、均化布光、加轮廓光,或叠加一个"亮度键"补暗部发丝。
不同设备参考值(仅作起点,需现场微调):
参数        OBS 默认    常见范围    说明
相似度       400       350~450    太小留杂斑,太大误抠浅色衣物
平滑度        80        60~100     太小锯齿,太大边缘发灰
溢出抑制     100        80~150     太大边缘失真,太小绿边明显

7.4 场景四:屏幕采集清晰度优化

屏幕采集"太模糊"的九成原因是缩放滤镜或输出分辨率,按此顺序排查:

  1. 缩放滤镜:选中屏幕源 → 右键 → 变换 → 缩放滤镜 → 双三次 / Lanczos(默认双线性,缩小到"显示器"框里必然发糊)。
  2. 输出分辨率:设置 → 视频,输出分辨率 ≥ 1080p,不要低于屏幕;录屏时输出=画布。
  3. 码率:设置 → 输出 → 高级 → 录制/推流,1080p 用 10000~20000 kbps;录制可选"近乎无损"。
  4. 编码器预设:选"质量"而非"性能/低延迟"。
  5. 若文字太小被缩小,物理上必糊 → 放大屏幕内容再采集,或提高该源分辨率。
直播码率受平台上限限制(通常 6000~8000 kbps),本地录制可单独设更高码率,二者互不影响。

7.5 场景五:音频与回声

虚拟摄像头不带音频,且"外放 + 麦克风"极易产生回声。要点:系统输出走耳机;只让一路程序采集麦克风;全链路采样率统一 48 kHz;直播伴侣的回声消除按需开启。完整原理与排查见同目录《直播连麦音频与回声消除》。

8. 参数速查手册

8.1 视频 / 编码参数

项目推荐值说明
基础(画布)分辨率= 屏幕分辨率如 1920×1080 / 2560×1440
输出(缩放)分辨率1920×1080不要低于 1080p
帧率30 fps绿幕口播 30 足够;游戏 60
直播码率4000~8000 kbps受平台上限约束
录制码率10000~20000 kbps或选"近乎无损"
编码器硬件编码Mac: VideoToolbox;N卡: NVENC;Intel: QuickSync
编码预设质量(Quality)不要用性能/低延迟
关键帧间隔2 秒与平台要求一致
缩放滤镜Lanczos / 双三次屏幕源与缩小的人像源都要设

8.2 色度键参数

参数英文OBS 默认调节方向
关键颜色类型Key Color Type绿色用取色器取实际绿幕颜色
相似度Similarity400背景不干净↑,误抠浅色衣物↓
平滑度Smoothness80边缘锯齿↑,边缘发灰↓
溢出抑制Spill Reduction100绿边明显↑,边缘失真↓

8.3 RTMP 推流参数

平台工具获取推流码
抖音直播伴侣(Win / macOS 13+)直播伴侣设置内可查看推流地址
视频号视频号助手(网页 / PC)直播管理 → 创建直播 → 推流地址 + 密钥
串流密钥(Stream Key):推流地址中的身份凭证,等同于"直播间密码"。视频号每次创建直播都会变更密钥,泄漏会让别人抢占你的直播间,切勿外传。

8.4 常见问题速查

现象根因解法
开了虚拟摄像头很卡双重编码 + 预览占资源关 OBS 预览;改硬件编码;降 720p/30;改用 RTMP 直推
屏幕画面模糊双线性缩放 / 输出分辨率低 / 码率低缩放滤镜改 Lanczos;输出 ≥1080p;码率拉高
抠像边缘发绿溢色 + 溢出抑制不足加轮廓光、人物远离绿幕;提高溢出抑制
背景抠不干净留杂斑绿幕褶皱 / 布光不均拉平绿幕、均化布光;重取色、提高相似度
人像边缘被抠掉相似度太高 / 穿绿衣降相似度;换服装
直播伴侣找不到摄像头虚拟摄像机未启动 / 授权未允许OBS 启动虚拟摄像机;macOS 隐私与安全性允许系统扩展

9. 总结